package com.ltkj.ticket.mapper;

import com.ltkj.ticket.domain.dto.*;
import com.ltkj.ticket.domain.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface AppletTicketMapper {
    List<AppletTicketPageVo> list(@Param("queryDTO") AppletTicketQueryDTO queryDTO);

    TicketDetailVo selectTickeDetail(@Param("queryDTO") AppletTicketDetailQueryDTO queryDTO);

    List<String> selectTicketPics(@Param("infoId") Long infoId);

    List<TicketTourVo> selectTourVos(@Param("queryDTO") AppletTicketDetailQueryDTO queryDTO);

    List<TicketTypeVo> selectTictkeTypes(@Param("stockDate") Date stockDate,@Param("ticketId") Long ticketId);

    List<AppletOrderPageVo> listOrder(@Param("queryDTO") AppletOrderQueryDTO queryDTO);

    AppletOrderDetailVo detailOrder(@Param("queryDTO")AppletOrderDetailQueryDTO queryDTO);

    void payOrderStatus(@Param("orderId") Long orderId,@Param("status") String status);
    void updateOrderStatus(@Param("orderId") Long orderId,@Param("status") String status);
    void payOrderDetailStatus(@Param("orderId")Long orderId,@Param("status") String status);

    void deleteOrder(@Param("orderId")Long orderId);

    void deleteOrderDetail(@Param("orderId")Long orderId);

    void backfill(@Param("orderDetailId")Long orderDetailId, @Param("trackingCode")String trackingCode);

    List<AppletOrderDetailPageVo> detailOrderByOrderId(@Param("orderId")Long orderId);

    List<AppletOrderDetaildVo> detailOrderDetailByOrderId(@Param("orderId")Long orderId);

    String selectTicCheckStatus(@Param("orderNum")String orderNum);

    List<AppletOrderPageVo> listOrderNew(@Param("queryDTO")AppletOrderNewQueryDTO queryDTO,@Param("arr") String [] arr);
    List<AppletOrderVenuesPageVo> listOrderVenues(@Param("queryDTO")AppletOrderVenuesQueryDTO queryDTO);

    List<AppletOrderVenuesDetailsPageVo> detailOrderVenuesByOrderId(Long orderId);

    AppletOrderVenuesPageVo listOrderVenuesByOrderId(Long orderId);
    AppletOrderVenuesPageVo listOrderVenuesByOrderIdOrOrderNUm(@Param("queryDTO")AppletOrderDetailQueryDTO queryDTO);

    List<OrderDetailsVo> selectTicOrderDetailByOrderId(Long orderId);

    List<OrderDetailsVo> selectTicOrderDetailByOrderNum(String orderNum);

    void payOrderStatusByOrderNum(@Param("orderNum")String orderNum, @Param("status") String status);

    void payOrderDetailStatusByOrderNum(@Param("orderNum")String orderNum, @Param("status") String status);

    TicStockDateVo selectTicStockDate(@Param("ticConfigId") Long ticConfigId);

    void updateStockCountByStockDate(@Param("ticketId")Long ticketId,@Param("ticketCount") Integer ticketCount,@Param("stockDate")  Date stockDate);

    void updateVenuesPeriodCount(@Param("periodId")Long periodId,@Param("ticketCount") Integer ticketCount);

    void updateUserCouponByOrderId(Long orderId);
}
